<?php
class ControllerDelimanKhuvuc extends Controller
{
	private $error = array();
   	function __construct() 
	{
		$listchek = $this->getListCheck();
		if(in_array($this->getMethod(),$listchek))
		{
			if(!$this->user->hasPermission($this->getRoute(), $this->getMethod()))
			{
				$this->response->redirect("?route=common/permission");
			}
		}
		
		$this->data['list_button'] = array();
		foreach($listchek as $method)
		{
			$this->data['list_button'][$method] = $this->user->hasPermission($this->getRoute(), $method);
		}
		
	 	$this->load->model("deliman/khuvuc");
		
		
   	}
	
	public function index()
	{
		$this->getList();
	}
	
	public function insert()
	{
    	$this->getForm();
	}
	
	public function update()
	{
		$this->data['haspass'] = false;
		$this->data['readonly'] = 'readonly="readonly"';
		$this->data['class'] = 'readonly';
		$this->getForm();
  	}
	
	public function move()
	{
		$this->data['item'] = $this->model_deliman_khuvuc->getItem($this->request->get['khuvucid']);
		$this->data['khuvucs'] = array();
		$this->model_deliman_khuvuc->getTree(0, $this->data['khuvucs'],0,$this->request->get['khuvucid']);
		$this->id='content';
		$this->template='deliman/khuvuc_move.tpl';
		$this->render();
	}
	
	public function delete() 
	{
		$listkhuvucid=$this->request->post['delete'];
		if(count($listkhuvucid))
		{
			foreach($listkhuvucid as $khuvucid)
			{
				$this->model_deliman_khuvuc->delete($khuvucid);	
			}
			$this->data['output'] = "true";
		}
		$this->id="content";
		$this->template="common/output.tpl";
		$this->render();
  	}
	
	public function remove() 
	{
		$khuvucid=$this->request->get['khuvucid'];
		if($this->validateRemoveKhuVuc($khuvucid))
		{
			$khuvuc = $this->model_deliman_khuvuc->getItem($khuvucid);
			$this->model_deliman_khuvuc->delete($khuvucid);	
			
			$arr = array(
						'error' => '',
						'khuvuccha' => $khuvuc['khuvuccha']
						);
			$this->data['output'] = json_encode($arr);
		}
		else
		{
			foreach($this->error as $item)
			{
				$this->data['output'] .= $item."\n";
			}
			$arr = array(
						'error' => $this->data['output']
						);
			$this->data['output'] = json_encode($arr);
		}
		$this->id="content";
		$this->template="common/output.tpl";
		$this->render();
  	}
	
	private function validateRemoveKhuVuc($khuvucid)
	{
		//Kiem tra tren bang phieu tra bao
		$where = " AND ( khuvuctraid = '".$khuvucid."'";
		$where .= " OR khuvucnhanid = '".$khuvucid."')";
		$this->load->model('deliman/phieutrabao');
		$data_phieutrabao = $this->model_deliman_phieutrabao->getList($where);
		if(count($data_phieutrabao))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";	
		$data_ctphieutrabao = $this->model_deliman_phieutrabao->getChiTietPhieuTraBaoList($where);
		if(count($data_ctphieutrabao))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";
		
		//Kiem tra tren bang phieu giao bao
		$where = " AND khuvucgiaoid = '".$khuvucid."'";
		$this->load->model('deliman/phieugiaobao');
		$data_phieugiaobao = $this->model_deliman_phieugiaobao->getList($where);
		if(count($data_phieugiaobao))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";	
		$data_ctphieugiaobao = $this->model_deliman_phieugiaobao->getChiTietPhieuGiaoBaoList($where);
		if(count($data_ctphieugiaobao))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";
		
		//Kiem tra tren bang phieu phan phoi
		$where = " AND khuvucid = '".$khuvucid."'";
		$this->load->model('deliman/phieuphanphoi');
		$data_ctphieuphanphoi = $this->model_deliman_phieuphanphoi->getChiTietPhieuPhanPhoiList($where);
		if(count($data_ctphieuphanphoi))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";
		
		//Kiem tra tren bang phu trach khu vuc
		$where = " AND khuvucid = '".$khuvucid."'";
		$this->load->model('deliman/nhanvien');
		$data_phutrachkhuvuc = $this->model_deliman_nhanvien->getPhuTrachKhuVucList($where);
		if(count($data_phutrachkhuvuc))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";	
		
		//Kiem tra tren bang khach hang
		$where = " AND khuvucid = '".$khuvucid."'";
		$this->load->model('deliman/khachhang');
		$data_khachhang = $this->model_deliman_khachhang->getList($where);
		if(count($data_khachhang))
			$this->error['thongbao'] = "Không thể xóa khu vực này. Vì dữ liệu đang dược sử dụng!";	
			
		if (count($this->error)==0) {
	  		return TRUE;
		} else {
	  		return FALSE;
		}
	}
	
	private function getList() 
	{
		$this->data['insert'] = $this->url->http('deliman/khuvuc/insert');
		$this->data['delete'] = $this->url->http('deliman/khuvuc/delete');		
		$this->data['treekhuvuc'] = $this->getTree();
		
		$this->id='content';
		$this->template="deliman/khuvuc_list.tpl";
		$this->layout="layout/deliman";
		
		$this->render();
	}
	
	public function getTreeView()
	{
		
		$root = @(int)$this->request->get['root'];
		$this->data['output'] = $this->getTree($root);
		$this->id='content';
		$this->template='common/output.tpl';
		$this->render();
	}
	
	private function getTree($root = 0)
	{
		
		$khuvucs = $this->model_deliman_khuvuc->getChild($root);
		$str = "";
		foreach($khuvucs as $item)
		{
			$child = $this->model_deliman_khuvuc->getChild($item['khuvucid']);
			$str.='<li id="node'.$item['khuvucid'].'" class="closed" ref="'.$root.'">';
			$type = 'folder';
			$btnRemove ="";
			if(count($child)==0)
			{
				$type = 'file';
				$btnRemove = '[<a onClick="khuvuc.remove('.$item['khuvucid'].')">Remove</a>]';
			}
			$btnEdit ="";
			$btnAdd ="";
			if($this->data['list_button']['update'])
				$btnEdit = '[<a onClick="khuvuc.edit('.$item['khuvucid'].')">Edit</a>]';
			if($this->data['list_button']['insert'])
				$btnAdd = '[<a onClick="khuvuc.add('.$item['khuvucid'].')">Add child</a>]';
		
			//$btnMove = '<a onClick="khuvuc.move('.$item['khuvucid'].')">Move</a>';
			$parent = '<input type="hidden" id="nodeparent_'.$item['khuvucid'].'" name="parent['.$item['khuvucid'].']" value="'.$root.'">';
			$str.='<span id="khuvuc'.$item['khuvucid'].'" class="'.$type.'"><b><span id="tenkhuvuc'.$item['khuvucid'].'">'.$item['tenkhuvuc'].'</span></b> '.$btnMove.' '.$btnEdit.' '.$btnAdd.'  '.$btnRemove.$parent.'</span>';
			if(count($child))
			{
				$str .= "<ul id='group".$item['khuvucid']."'>";
				$str .= $this->getTree($item['khuvucid']);
				$str .= "</ul>";
			}
			$str.='</li>';
		}
		return $str;
	}
	
	
	
	
	private function getForm()
	{		
		
		if ((isset($this->request->get['khuvucid'])) ) 
		{
      		$this->data['item'] = $this->model_deliman_khuvuc->getItem($this->request->get['khuvucid']);
    	}
		else
		{
			$this->data['item']['khuvuccha'] = $this->request->get['parent'];
			$khuvuccha = $this->model_deliman_khuvuc->getItem($this->data['item']['khuvuccha']);
			$loaikhuvuc = "";
			switch($khuvuccha['loaikhuvuc'])
			{
				case "":
					$loaikhuvuc = "tinhthanh";
					break;
				case "tinhthanh":
					$loaikhuvuc = "khuvuc";
					break;
				case "khuvuc":
					$loaikhuvuc = "khuvuc";
					break;
				
			}
				
			$this->data['item']['loaikhuvuc'] = $loaikhuvuc;
		}
		
		$this->id='content';
		$this->template='deliman/khuvuc_form.tpl';
		$this->render();
	}
	
	public function save()
	{
		$data = $this->request->post;
		if($this->validateForm($data))
		{
			if($data['khuvucid']=="")
			{
				$this->model_deliman_khuvuc->insert($data);	
			}
			else
			{
				$this->model_deliman_khuvuc->update($data);	
			}
			
			$this->data['output'] = "true";
		}
		else
		{
			foreach($this->error as $item)
			{
				$this->data['output'] .= $item."<br>";
			}
		}
		$this->id='content';
		$this->template='common/output.tpl';
		$this->render();
	}
	
	private function validateForm($data)
	{
		/*if (trim($data['makhuvuc']) == "") 
		{
      		$this->error['makhuvuc'] = "Bạn chưa nhập mã khu vực";
    	}
		else
		{
			$where = " AND makhuvuc = '".$data['makhuvuc']."'";
			$kybaos = $this->model_deliman_khuvuc->getList($where);
			if(count($kybaos) > 0 && $data['khuvucid'] == "")
			{
				$this->error['makhuvuc'] = "Mã khu vực đã tồn tại trong hệ thống";	
			}
		}*/
		
		if (trim($data['tenkhuvuc']) == "") 
		{
      		$this->error['tenkhuvuc'] = "Bạn chưa nhập tên khu vực";
    	}
		
		if (trim($data['loaikhuvuc']) == "") 
		{
      		$this->error['loaikhuvuc'] = "Bạn chưa chọn loại khu vực";
    	}
	
		if (count($this->error)==0) {
	  		return TRUE;
		} else {
	  		return FALSE;
		}
	}
	//Cac ham xu ly tren form
	public function updateParent()
	{
		$data = $this->request->post;
		$this->model_deliman_khuvuc->updateCol($data['khuvucid'],'khuvuccha',$data['khuvuccha']);
		$this->data['output'] = "true";
		$this->id='content';
		$this->template='common/output.tpl';
		$this->render();
	}
	
	public function savePostion()
	{
		$data = $this->request->post['parent'];
		
		foreach($data as $key => $val)
		{
			$this->model_deliman_khuvuc->updateCol($key,'khuvuccha',$val);
		}
		
		$this->data['output'] = "true";
		$this->id='content';
		$this->template='common/output.tpl';
		$this->render();
	}
	
	public function getKhuVuc()
	{
		$khuvucid = $this->request->get['khuvucid'];
		$khuvuc = $this->model_deliman_khuvuc->getItem($khuvucid);
		
		
		$this->data['output'] = json_encode(array('khuvuc' => $khuvuc));
		$this->id="kybao";
		$this->template="common/output.tpl";
		$this->render();
	}
}
?>